'use strict';
const dayjs = require("dayjs");
module.exports = app => {
  const { STRING, INTEGER, DECIMAL } = app.Sequelize;
  const Model = app.model.define(
    'invoice',
    {
      id: {type: INTEGER, primaryKey: true, autoIncrement: true},
      user_id: STRING(100),
      company_name: STRING(255),
      intro: STRING(255),
      amount: DECIMAL(10, 2),
      email: STRING(255),
      result: STRING(255),
      status: INTEGER,
      create_time: {
        type: app.Sequelize.DATE,
        allowNull: false,
        get() {
          return dayjs(this.getDataValue('create_time')).format('YYYY-MM-DD HH:mm:ss');
        },
      },
      updated_time: {
        type: app.Sequelize.DATE,
        allowNull: false,
        get() {
          return dayjs(this.getDataValue('updated_time')).format('YYYY-MM-DD HH:mm:ss');
        },
      }
    },
    {
      tableName: 'invoice',
      timestamps: true, // 启用时间戳(createdAt, updatedAt)
      updatedAt: 'updated_time', // 不想要 updatedAt
      createdAt: 'create_time', // 想要  createdAt 但是希望名称叫做 created_at
    }
  );
  Model.associate = function() {
    app.model.Invoice.belongsTo(app.model.User, { foreignKey: 'user_id', targetKey: 'id' });
  }
  return Model;
};
// 生成一个mysql建表语句
// CREATE TABLE `invoice` (
//   `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键',
//   `user_id` varchar(100) DEFAULT NULL COMMENT '用户id',
//   `company_name` varchar(255) DEFAULT NULL COMMENT '公司名称',
//   `intro` varchar(255) DEFAULT NULL COMMENT '简介',
//   `amount` decimal(10,2) DEFAULT NULL COMMENT '金额',
//   `email` varchar(255) DEFAULT NULL COMMENT '邮箱',
//   `result` varchar(255) DEFAULT NULL COMMENT '结果',
//   `status` int(11) DEFAULT NULL COMMENT '状态' DEFAULT 0,
//   `create_time` datetime NOT NULL COMMENT '创建时间',
//   `updated_time` datetime NOT NULL COMMENT '更新时间',
//   PRIMARY KEY (`id`)
// ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='发票表';

